Conventionally, software for an image processing apparatus is mainly constituted as static and fixed so-called firmware on a real-time OS (operating system). Even when the firmware like this contains plural modules interiorly, the entire thereof is stored in a nonvolatile memory of the image processing apparatus in the state being statically linked to a single load module. Thus, at the time of boot of the OS, the firmware is loaded from the nonvolatile memory such as a hard disk or the like to a RAM (random access memory) and executed, or the firmware is directly executed on the nonvolatile memory such as a ROM (read only memory). In particular, for the purpose of economical efficiency and safety, the firmware which constitutes an embedded system in a low-priced image processing apparatus or the like is generally constituted so that the partial module is not dynamically loaded or linked. That is, the reason why the firmware is constituted as above is that the storage capacity of a symbol table necessary to achieve a dynamic link, overhead for a process for resolution to the address of a symbol, and the like deteriorate cost performance of the apparatus, and that there is a risk that a sub module additionally loaded and linked jeopardizes the quality and security of the whole system which have been sufficiently evaluated and achieved before the sub module is linked.
Consequently, as disclosed by the present applicant in, e.g., Japanese Patent Application Laid-Open No. H11-282684, Japanese Patent Application Laid-Open No. 2003-256216, or the like, an image processing apparatus in which one more layer of a software operating environment is provided on the real-time OS of firmware of an embedded system is developed. More specifically, the disclosed image processing apparatus supports the dynamic characteristics of software such as dynamic loading, dynamic linking, dynamic memory operation and the like in the software operating environment added as above. The added software operating environment is composed of an interpreter and a set of API (application programming interface) group and framework group, and provides a kind of OS or a so-called computing platform for the software running thereon. Here, the interpreter successively reads, interprets and executes a series of instruction string composed of instructions included in a predetermined instruction set. If the instruction set is considered to be equivalent to an instruction set for a CPU of hardware, the interpreter might particularly be called a virtual machine. The set of API group and framework group provides an access to the resources provided by the actual real-time OS existing in the lower layer of this software operating environment and various resource groups abstracted from hardware resources, for the benefit of the software running on the software operating environment. Here, it should be noted that the resources include an instruction execution context by a processor, various I/O's (inputs/outputs) including a memory, a file system and a network interface, and the like. Particularly, in the instruction execution context, the software operating environment can manage the instruction execution context independently of the multitask mechanism provided by the actual CPU and the real-time OS. Likewise, in the memory, the software operating environment can provide independent memory management.
The software running on the above software execution environment is successively read, interpreted and executed by the interpreter, whereby there is a possibility that the instruction string is monitored during the above process and thus the operation having an adverse affect on the system can be eliminated. Moreover, in the access from the software on the software execution environment to each resource, the resource is managed indirectly through the API group and the framework group provided by the software execution environment, whereby there is a possibility that the operation having an adverse affect on the system can be eliminated during the above process. Therefore, the approach for providing the layer of the software execution environment consisting of the interpreter, the API group and the framework group within the firmware is significantly effect to partially introduce the dynamic characteristic of software in the firmware of the low-cost embedded system to be statically and fixedly constituted fundamentally.
In the above approach, it is possible to adopt a Java™ virtual machine as the interpreter to achieve the layer of the software execution environment, whereby it is thus possible to adopt the API group and the framework group which are relevant to Java™. Incidentally, the present applicant brought MEAP™ (Multifunctional Embedded Application Platform) being the multifunctional apparatus containing a Java™ platform within the firmware of an image processing apparatus to the market in 2003.
In the meantime, for example, Japanese Patent Application Laid-Open No. H11-053132 (called JP '132) discloses a network computer built-in printer and a computer network system including the relevant printer. More specifically, in JP '132, a data file to be printed and an application corresponding to the data file are downloaded from the computer network into an application download type printer which is interiorly equipped with the network computer, and the downloaded application is started by the network computer, whereby the data file is extracted and converted into a raster image, and the acquired raster image is actually printed. Moreover, JP '132 discloses a case where the application is a Java™ applet, a case where the application is pushed from a client together with the print data file, and also a case where the printer pulls the application from an application server or the like.
Moreover, Japanese Patent Application Laid-Open No. H11-306107 (called JP '107) discloses a network communication system in which plural peripheral devices, plural terminal devices having software for operating the terminal devices, and a server device having a database concerning the software for operating at least the peripheral devices are connected to a transmission channel, and network communication is performed among these devices based on a predetermined communication protocol. More specifically, in JP '107, the peripheral device consists of a client control unit which requests/acquires latest module information corresponding to all or a part of the software for operating the peripheral device or a module used by the software to/from the server device, and a software delivery agent which delivers the acquired latest module information to the terminal devices. Moreover, JP '132 discloses that a Java™ applet and a Java™ application can be supplied as a client-side module to be used by the software for operating the peripheral devices.
Incidentally, in a PDL (page description language) printer, individual handling such as customize, minute correction or the like might be requested. That is, customer's printing environments and requests in the respective environments are various. For example, in a basic business system, it might be constituted that a business application which has been independently developed in each of the customer's environments directly generates print data. Moreover, even in the case where the business application generates the print data through a printer driver, the customer's demand or request to maintain the stability of the whole system which once began to operate normally is very strong, whereby it might not be permitted to easily change the printer driver. Besides, a certain kind of printer has the function of interpreting and printing the PDL data developed by another company. In such a case, several kinds of systems might be constituted so that the printing is executed through the printer driver developed by a third party instead of the printer driver developed to be dedicated for the relevant printer and the printer driver developed by the PDL development source, whereby it might not be permitted to change the printer driver. In other words, actual customer's environments are various, and it is thus necessary to independently handle each of these environments.
In such limitations of the actual printing environment, a printer vendor has to meet various customer's requests by handling them from the printer side without requesting the handling from the customer's environment side. For example, in a case where a finishing function of executing double-sided printing, book binding and the like is provided as the new function of a new product of printer, if a print job is entered through the dedicated printer driver developed as well as the development of the new product, or if a customer's business application is updated to generate PDL data including a newly added command string, it is of course possible to make full use of the above new function. However, it is actually requested to be able to use the new function of the printer only by handling it from the printer side without affecting any customer's system.
Alternatively, in a case where plural vendors supply the printer corresponding to a certain PDL specification, a compatibility problem that there is a difference in the interpretation of the PDL according to the capabilities of the vendors possibly occurs at all times. Therefore, in the customer's environment that the problem of this type occurs and becomes the obstacle in the actual business, the printer side has to handle and eliminate it even if it is individual handling.
Moreover, on rare occasions, the products might be shipped with a bug, being actualized with respect to PDL data of a specific pattern, contained due to the problem in printer firmware implementation (or packaging or mounting). Under normal conditions, since the printer is shipped as the product through sufficient quality evaluation, the PDL data of the above specific pattern does not come out when the relevant printer is used normally in many customer's printing environments, whereby the bug does not become a problem at all. Nevertheless, the bug might be actualized in, e.g., the above business system or the like. Thus, in such a case, it is of course necessary to take a countermeasure against the bug as promptly as possible especially in the relevant customer's environment.
Furthermore, the PDL data generated by a specific application might include a data pattern which has scope to be optimized because of a characteristic in printer implementation. For example, when the PDL data including a redundant description is compared with the PDL data including an optimum description, the improvement of print performance for the PDL data including the optimum description is remarkable as compared with that for the PDL data including the redundant description. Therefore, in the customer's printing environment to which the above specific application is used, if the application or the printer driver cannot be updated, it is desirable to optimize the PDL data by the handling of the printer side.
In order to satisfy the above requests on the printer side without affecting any customer's system, there is a method of altering the firmware constituting the printer and releasing it for individual handling, and this method might be actually adopted. However, in case of altering the firmware for the individual handling, the development period is prolonged and the development cost becomes high, including quality re-evaluation of the whole apparatus. Moreover, in case of updating the firmware embedded in the apparatus delivered to a customer's environment, since high-level maintenance by a field engineer or the like is continuously necessary, the problem remains in the point of prompt satisfaction to the customer's requests and also in the point of cost-effectiveness. In fact, a part of the customer's requests can be satisfied by adding a pre-process before the received PDL data stream is interpreted and then executing necessary conversion to the PDL data stream itself in the pre-process, even if the whole firmware of the printer is not changed. For this reason, it is necessary to provide a more dynamic mechanism by which only the software for achieving the pre-process to be executed before the received PDL data stream is interpreted can be added, in addition to another firmware, in flexible and extensible manner.
However, even if it intends to satisfy the above requests by the background art, the following problems exist.
In the conventional apparatus such as the MEAP™ which contains the software operating environment layer such as the Java™ platform within the firmware of the embedded system, it is possible to newly develop a new device embedded application in addition to the firmware on the software operating environment. Thus, the Java™ application can access the print function of the apparatus through the API. However, since the Java™ platform is located at the embedded application layer within the firmware, a print data reception function and a print server function which are achieved as the native embedded applications in the same layer cannot be diverted to the Java™ application. That is, the print server function that various print service protocols for receiving the print data through the network has to be again implemented on the Java™ application side, whereby it is inefficient in the points of development load, evaluation load, memory capacity in case of executing the print server function, and the like.
In the meantime, in another conventional apparatus which does not contain a software operating environment within the firmware of the embedded system, the whole embedded system is constituted to be able to adopt a dynamic link and a plug-in. That is, the whole system has the dynamic constitution. On the premise that the portion to which the dynamic characteristic is demanded is only the mechanism by which the pre-process to be executed before the received PDL data stream is interpreted is added in flexible and extensible manner, such approaches of the conventional apparatuses as above are not suitable for a low-cost small system due to cost increase and difficulty of quality assurance according to overhead costs for constituting the whole system as dynamic software.